Construyendo Universos Digitales

Python para pensadores
Taller diseñado con el corazón de un docente y la mente de un programador
Python: Manejo de módulos y paquetes

Objetivo de aprendizaje

Dominar la creación, organización y uso de módulos y paquetes en Python para desarrollar programas modulares, escalables y mantenibles, integrando competencias técnicas como la importación de bibliotecas, habilidades cognitivas de análisis y síntesis para estructurar soluciones, y actitudes de curiosidad y colaboración que permitan construir software ético y socialmente relevante para la comunidad educativa ecuatoriana.

Contextualización

Imagina que estás organizando la biblioteca de tu colegio. Tienes miles de libros: algunos son de matemáticas, otros de historia, algunos de literatura. ¿Los pondrías todos juntos en una sola pila? Por supuesto que no. Los organizarías por materias, por autores, por años... crearías un sistema.

Así funciona Python con los módulos y paquetes. Cada vez que escribes un programa, estás creando conocimiento. Y como en cualquier biblioteca, ese conocimiento necesita organización. Cuando programas, no estás solo escribiendo código; estás creando un ecosistema digital que, bien organizado, puede crecer, evolucionar y servir a otros.

En el Ecuador digital de hoy, donde las soluciones tecnológicas locales son cada vez más necesarias, aprender a estructurar código no es solo una habilidad técnica: es una forma de pensar sistémicamente, de construir soluciones que perduren y se adapten, de crear herramientas que realmente sirvan a nuestra comunidad.

Desarrollo de la actividad

Un módulo en Python es simplemente un archivo con extensión .py que contiene código Python. Un paquete es una carpeta que contiene varios módulos organizados jerárquicamente.

Creando tu primer módulo

Vamos a crear un módulo para operaciones matemáticas básicas con sabor ecuatoriano:

# modulo_matematicas_ec.py
# Módulo con operaciones matemáticas inspiradas en Ecuador

def calcular_iva(monto, porcentaje=12):
    """Calcula el IVA de un monto (por defecto 12% como en Ecuador)"""
    return monto * porcentaje / 100

def convertir_dolares_a_sucres(dolares):
    """Convierte dólares a sucres (tipo de cambio fijo: 1 USD = 25000 sucres)"""
    return dolares * 25000

def calcular_promedio_pichincha(*calificaciones):
    """Calcula el promedio de calificaciones (como en los colegios de Pichincha)"""
    if len(calificaciones) == 0:
        return 0
    return sum(calificaciones) / len(calificaciones)

# Probemos nuestro módulo internamente
if __name__ == "__main__":
    print("Prueba del módulo:")
    print("IVA de $100:", calcular_iva(100))
    print("$10 en sucres:", convertir_dolares_a_sucres(10))
    print("Promedio de 15, 18, 20:", calcular_promedio_pichincha(15, 18, 20))

Usando nuestro módulo desde otro archivo

Ahora creamos otro archivo para importar y usar nuestro módulo:

# programa_principal.py
# Importando nuestro módulo personalizado

import modulo_matematicas_ec as mate_ec

# También podemos importar funciones específicas
from modulo_matematicas_ec import calcular_iva, convertir_dolares_a_sucres

print("=== Sistema de cálculos ecuatorianos ===")

# Usando el módulo con alias
compra = 250
iva_calculado = mate_ec.calcular_iva(compra)
print(f"Compra: ${compra}, IVA: ${iva_calculado:.2f}")

# Usando funciones importadas directamente
dolares = 50
sucres = convertir_dolares_a_sucres(dolares)
print(f"{dolares} dólares equivalen a {sucres:,} sucres")

# Usando otra función del módulo
promedio = mate_ec.calcular_promedio_pichincha(16, 18, 14, 20)
print(f"Promedio de calificaciones: {promedio:.1f}")

Creando un paquete

Un paquete es una carpeta que contiene un archivo especial llamado __init__.py (que puede estar vacío) y módulos relacionados:

# Estructura de un paquete ecuatoriano:
# paquete_ecuador/
#   __init__.py
#   matematicas.py
#   geografia.py
#   cultura.py

# paquete_ecuador/matematicas.py
def calcular_area_rectangulo(base, altura):
    """Calcula el área de un rectángulo"""
    return base * altura

# paquete_ecuador/geografia.py
def obtener_provincias():
    """Retorna la lista de provincias de Ecuador"""
    return ["Azuay", "Bolívar", "Cañar", "Carchi", "Chimborazo", 
            "Cotopaxi", "El Oro", "Esmeraldas", "Galápagos", "Guayas",
            "Imbabura", "Loja", "Los Ríos", "Manabí", "Morona Santiago",
            "Napo", "Orellana", "Pastaza", "Pichincha", "Santa Elena",
            "Santo Domingo", "Sucumbíos", "Tungurahua", "Zamora Chinchipe"]

# programa principal usando el paquete
from paquete_ecuador import geografia, matematicas

print("Provincias de Ecuador:")
for provincia in geografia.obtener_provincias():
    print("-", provincia)

area = matematicas.calcular_area_rectangulo(10, 5)
print(f"Área de un rectángulo de 10x5: {area}")

Reflexión: ¿Qué ventajas ves en organizar tu código en módulos y paquetes? ¿Cómo podrías aplicar esta organización a un proyecto sobre la biodiversidad ecuatoriana o sobre el patrimonio cultural de tu provincia?

El reto final

Reto: Sistema de Gestión para el Festival de Ciencias del Colegio

Tu colegio está organizando un Festival de Ciencias y te ha encargado desarrollar un sistema modular en Python para gestionar las actividades. El sistema debe:

  1. Crear un paquete llamado festival_ciencias con al menos tres módulos:
    • registro.py: Para registrar participantes (estudiantes, profesores, proyectos)
    • calificacion.py: Para que los jueces califiquen los proyectos
    • reportes.py: Para generar reportes de los resultados
  2. Cada módulo debe contener al menos dos funciones relevantes a su propósito.
  3. Crear un programa principal que importe y use todos los módulos del paquete.
  4. Implementar al menos una función que reciba parámetros con valores por defecto.
  5. Incluir documentación en cada módulo explicando su propósito.

Preguntas para guiar tu solución:

  • ¿Cómo estructurarías las carpetas y archivos?
  • ¿Qué datos específicos del festival necesitarías manejar?
  • ¿Cómo harías para que el sistema pueda crecer en futuras versiones?
  • ¿Qué elementos de la cultura ecuatoriana podrías incorporar en tu diseño?

Evaluación lúdica

Test: ¿Eres un maestro de los módulos?

Responde las siguientes preguntas para demostrar tu comprensión de módulos y paquetes en Python.

Cargando pregunta...
Puntaje: 0 / 5